package pe.com.casadesign.service.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.com.casadesign.dao.PrestamoDAO;
import pe.com.casadesign.domain.ListaPrestamo;
import pe.com.casadesign.domain.OperacionResultado;
import pe.com.casadesign.domain.Prestamo;
import pe.com.casadesign.service.PrestamoService;
import pe.com.casadesign.service.util.Constantes;

/**
 * Implementacion de PrestamoService.
 * 
 * @author Pedro Vera
 * 
 */
@Service
public class PrestamoServiceImpl implements PrestamoService {
	private static final Logger logger = LoggerFactory.getLogger(PrestamoServiceImpl.class);
	
	@Autowired
    private PrestamoDAO prestamoDAO;
	
	@Override
	public ListaPrestamo listarPrestamo(Prestamo prestamo) {
		return prestamoDAO.listarPrestamo(prestamo);
	}

	@Override
	public Prestamo obtenerPrestamo(Prestamo prestamo) {
		return prestamoDAO.obtenerPrestamo(prestamo);
	}

	@Override
	@Transactional (propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	public OperacionResultado registrarPrestamo(Prestamo prestamo) {
		boolean resultado = prestamoDAO.registrarPrestamo(prestamo);
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setCodigoGenerado(String.valueOf(prestamo.getCodPrestamo()));
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}
	
	@Override
	@Transactional (propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	public OperacionResultado actualizarPrestamo(Prestamo prestamo) {
		boolean resultado = prestamoDAO.actualizarPrestamo(prestamo)>0;
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setCodigoGenerado(String.valueOf(prestamo.getCodPrestamo()));
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}

}
